home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
027a
/
foxcolor.zip
/
UTCOLOR.PRG
< prev
Wrap
Text File
|
1990-10-23
|
22KB
|
767 lines
* Program.: UTCOLOR.PRG
* Author..: Fran Williamson
* Date....: 09/24/90
* Notice..: Copyright (c) 1990, Jeffco Public Schools
* Version.: FoxPro, revision 2.10
* Notes...: Show the user some color choices from UTCOLOR.DBF,
* If the user wants to make a new combination, s/he may do so
* using the color picker procedures in this program
PRIVATE ICOLREC, ROWLINE, COLBUNCH, COLCHOICE, COLORSEOF,;
NTEXT, NSAYS, NGETS, NMENF, NMENB, NHIGF, NHIGB, NBACK, NMSSG,;
RECHOOSE, SBUNCH, SCRCHOICE, CBUNCH, COLORPAL, CDELETED, COLMAX,;
MENV_TALK, MENV_STAT, MENV_BLIN, MENV_SCBD, MENV_CURS, MENV_DELT, MENV_ESCA,;
ARRIGHT, ARRLEFT, ARRDOWN, ARRUP, READNEW, NEWCOLOR
** SAVE CURRENT ENVIRONMENT
MENV_TALK = SET('TALK')
MENV_STAT = SET('STATUS')
MENV_BLIN = SET('BLINK')
MENV_SCBD = SET('SCOREBOARD')
MENV_CURS = SET('CURSOR')
MENV_DELT = SET('DELETED')
MENV_ESCA = SET('ESCAPE')
** CHANGE ENVIRONMENT
SET TALK OFF
SET STATUS OFF
SET BLINK OFF
SET SCOREBOARD OFF
SET CURSOR OFF
SET DELETED ON
SET ESCAPE ON
** MAKE ARROWS FOR SCREEN OUTPUT
ARRUP = ' '+CHR(24)+' '
ARRDOWN = ' '+CHR(25)+' '
ARRIGHT = ' '+CHR(26)+' '
ARRLEFT = ' '+CHR(27)+' '
** SET UP MAX OF 15 COLORS RECORDS ARRAY
STORE 15 TO COLMAX
DIMENSION COLORREC(15)
DIMENSION CHOICES(15)
DIMENSION RECNUM(15)
** SET UP THE 8 SCREEN AREAS TO ALLOW USER TO CHANGE
DIMENSION SCRAREAS(8)
STORE 'BACKGROUND' TO SCRAREAS(1)
STORE 'MENU FOREGROUND' TO SCRAREAS(2)
STORE 'MENU BACKGROUND' TO SCRAREAS(3)
STORE 'HIGHLIGHT FOREGROUND' TO SCRAREAS(4)
STORE 'HIGHLIGHT BACKGROUND' TO SCRAREAS(5)
STORE 'TEXT FOREGROUND' TO SCRAREAS(6)
STORE 'DATA FOREGROUND' TO SCRAREAS(7)
STORE 'INPUT BACKGROUND' TO SCRAREAS(8)
STORE 8 TO SBUNCH
** SAVE ROW AND COLUMNS FOR ARROW POSITIONS OF THE SCREEN AREAS
DIMENSION SROWARR(12)
DIMENSION SCOLARR(12)
STORE 6 TO SROWARR(1)
STORE 2 TO SROWARR(2)
STORE 2 TO SROWARR(3)
STORE 3 TO SROWARR(4)
STORE 3 TO SROWARR(5)
STORE 10 TO SROWARR(6)
STORE 13 TO SROWARR(7)
STORE 14 TO SROWARR(8)
** 9, 10 ARE EXTRA ARROW POSITIONS FOR THE SCREEN TEXT AREA
STORE 13 TO SROWARR(9)
STORE 14 TO SROWARR(10)
** 11, 12 ARE EXTRA ARROW POSITIONS FOR THE MENU FOREGROUND AND BACKGROUND
STORE 4 TO SROWARR(11)
STORE 5 TO SROWARR(12)
STORE 25 TO SCOLARR(1)
STORE 17 TO SCOLARR(2)
STORE 17 TO SCOLARR(3)
STORE 17 TO SCOLARR(4)
STORE 17 TO SCOLARR(5)
STORE 43 TO SCOLARR(6)
STORE 44 TO SCOLARR(7)
STORE 40 TO SCOLARR(8)
** 9, 10 ARE EXTRA ARROW POSITIONS FOR THE SCREEN TEXT AREA
STORE 9 TO SCOLARR(9)
STORE 9 TO SCOLARR(10)
** 11, 12 ARE EXTRA ARROW POSITIONS FOR THE MENU FOREGROUND AND BACKGROUND
STORE 17 TO SCOLARR(11)
STORE 17 TO SCOLARR(12)
** SET UP THE 16 POSSIBLE COLORS FOR USER TO SELECT
DIMENSION COLORS(16)
store 'W+' to colors(1)
STORE 'W' TO COLORS(2)
STORE 'N+' TO COLORS(3)
STORE 'N' TO COLORS(4)
STORE 'GR' TO COLORS(5)
STORE 'R' TO COLORS(6)
STORE 'R+' TO COLORS(7)
STORE 'RB' TO COLORS(8)
STORE 'RB+' TO COLORS(9)
STORE 'B' TO COLORS(10)
STORE 'B+' TO COLORS(11)
STORE 'BG' TO COLORS(12)
STORE 'BG+' TO COLORS(13)
STORE 'G' TO COLORS(14)
STORE 'G+' TO COLORS(15)
STORE 'GR+' TO COLORS(16)
STORE 16 TO CBUNCH
STORE .F. TO NTEXT, NSAYS, NGETS, NMENF, NMENB, NHIGF, NHIGB, NBACK, NMSSG
** BEGIN THE COLORS DISPLAY SCREEN
ON ESCAPE DO ENDUTCOL
SELECT (COLRAREA)
USE UTCOLOR
** CHECK FOR MONOCHROME SCREEN
IF SUBSTR(SYS(2006),1,2) = 'MO'
REPLACE ALL PICKED WITH ' '
LOCATE FOR NAME = 'MONOCHROME'
REPLACE PICKED WITH 'X'
RETURN
ENDIF
** FIND CURRENTLY PICKED COLOR COMBINATION
LOCATE FOR PICKED == 'X'
IF .NOT. FOUND()
GO TOP
ENDIF
STORE 1 TO ICOLREC
STORE .F. TO COLORSEOF
STORE .F. TO CDELETED
STORE .F. TO NEWCOLOR
STORE 0 TO COLBUNCH
STORE 1 TO COLCHOICE
SET COLOR OF NORMAL TO W/W
CLEAR
SET COLOR OF NORMAL TO W/N
** MAKE A PSUEDO WINDOW TO SHOW THE COLOR COMBINATIONS NAMES, 15 PER PAGE
@ 0,55 CLEAR TO 16,80
@ 0,55 TO 16,80 DOUBLE
@ 0,63 SAY 'COLOR SETS'
STORE .T. TO READNEW
** SHOW COLOR CHOICES BY NAME IN THE PSUEDO WINDOW
DO COLPAGE
STORE .T. TO RECHOOSE
** DO LOOP TO PROCESS THE USERS REQUEST OF CHANGING THE COLORS
DO WHILE .T.
STORE INKEY() TO KEYPRESS
DO CASE
CASE KEYPRESS = 5 && UP ARROW
IF COLCHOICE > 1
COLCHOICE = COLCHOICE - 1
ELSE
COLCHOICE = 1
IF .NOT. BOF()
SKIP -1
STORE .T. TO READNEW
ENDIF
ENDIF
DO COLPAGE
STORE .T. TO RECHOOSE
CASE KEYPRESS = 24 && DOWN ARROW
IF COLCHOICE < COLBUNCH
COLCHOICE = COLCHOICE + 1
ELSE
COLCHOICE = COLBUNCH
SKIP 1
IF .NOT. EOF()
GO RECORD RECNUM(2)
STORE .T. TO READNEW
ELSE
GO RECORD RECNUM(COLBUNCH)
ENDIF
ENDIF
DO COLPAGE
STORE .T. TO RECHOOSE
CASE KEYPRESS = 3 && PAGE DOWN
GO RECORD RECNUM(COLBUNCH)
SKIP 1
IF .NOT. EOF()
STORE .T. TO READNEW
COLCHOICE = 1
ELSE
GO RECORD RECNUM(COLBUNCH)
COLCHOICE = COLBUNCH
ENDIF
DO COLPAGE
STORE .T. TO RECHOOSE
CASE KEYPRESS = 18 && PAGE UP
GO RECORD RECNUM(1)
SKIP -COLMAX
IF RECNO() <> RECNUM(1)
STORE .T. TO READNEW
ENDIF
COLCHOICE = 1
DO COLPAGE
STORE .T. TO RECHOOSE
CASE KEYPRESS = 32 && ALT-D DELETE
** DON'T ALLOW DELETION OF IBM OR MONOCHROME
IF NAME <> 'IBM' .AND. NAME <> 'MONOCHROME'
DELETE
STORE .T. TO READNEW
STORE 0 TO RECNUM(COLCHOICE)
STORE .T. TO CDELETED
GO BOTTOM
** POSITION AT FIRST UNDELETED RECORD IN CURRENT SCREEN
FOR I = 1 TO COLBUNCH
IF RECNUM(I) > 0
GO RECORD RECNUM(I)
EXIT
ENDIF
ENDFOR
ELSE
GO RECORD RECNUM(1)
ENDIF
DO COLPAGE
STORE .T. TO RECHOOSE
CASE KEYPRESS = 31 && ALT-S SELECT A COLOR COMBINATION
REPLACE ALL PICKED WITH ' '
GO RECORD RECNUM(COLCHOICE)
REPLACE PICKED WITH "X"
EXIT
CASE KEYPRESS = 30 && ALT-A ADD A COLOR COMBINATION
STORE .F. TO NEWCOLOR
DO COLORPIC
ON ESCAPE DO ENDUTCOL
SET COLOR OF NORMAL TO W/W
@ 17,0 CLEAR TO 24,80
SET COLOR OF NORMAL TO W/N
@ 0,55 CLEAR TO 16,80
@ 0,55 TO 16,80 DOUBLE
@ 0,63 SAY 'COLOR SETS'
IF NEWCOLOR
REPLACE ALL PICKED WITH ' '
GO BOTTOM
REPLACE PICKED WITH "X"
EXIT
ELSE
DO COLPAGE
STORE .T. TO RECHOOSE
ENDIF
CASE KEYPRESS = 27 && EXIT, NO SELECT
STORE .F. TO RECHOOSE
EXIT
ENDCASE
IF RECHOOSE
SET COLOR OF NORMAL TO N/W
@ 23,0 CLEAR TO 24,80
@ 23,0 SAY '<'+ALLTRIM(ARRUP) + '><'+ALLTRIM(ARRDOWN)+'><PgUp><PgDn>=VIEW COLOR SETS'
@ 24,0 SAY '<ALT>{A}DD SET <ALT>{D}ELETE SET <ALT>{S}ELECT SET <ESC>=EXIT'
GO RECORD RECNUM(COLCHOICE)
DO COL_CHOOSE
STORE .F. TO RECHOOSE
ENDIF
ENDDO
DO ENDUTCOL
RETURN
************************************************************
* ENDUTCOL *
************************************************************
** LEAVING UTCOLOR, RESTORE ENVIRONMENT
PROCEDURE ENDUTCOL
DO SELCOLOR
SET TALK &MENV_TALK
SET STATUS &MENV_STAT
SET BLINK &MENV_BLIN
SET SCOREBOARD &MENV_SCBD
SET CURSOR &MENV_CURS
SET DELETED &MENV_DELT
ON ESCAPE *
SET ESCAPE &MENV_ESCA
IF CDELETED
PACK
ENDIF
USE
RETURN
************************************************************
* SELCOLOR *
************************************************************
** SAVE THE PICKED COLOR VALUES TO COLOR VARIABLES
PROCEDURE SELCOLOR
GO TOP
LOCATE FOR PICKED == "X"
IF .NOT. FOUND()
LOCATE FOR NAME = "IBM"
REPLACE PICKED WITH "X"
ENDIF
STORE TRIM(BACK) TO MBACK
STORE TRIM(TEXT)+'/'+MBACK TO MTEXT
STORE TRIM(SAYS)+'/'+MBACK TO MSAYS
STORE TRIM(GETS) TO MGETS
STORE MGETS TO MDELAST
STORE TRIM(MENU) TO MMENU
STORE TRIM(BOXS) TO MBOXS
STORE TRIM(TITL) TO MTITL
STORE TRIM(HIGH) TO MHIGH
STORE TRIM(HOTK) TO MHOTK
STORE TRIM(ERRMSG) TO MERRMSG
STORE TRIM(WRNMSG) TO MWRNMSG
** CHANGE COLORS
SET COLOR OF NORMAL TO &MTEXT
SET COLOR OF MESSAGE TO &MMENU
SET COLOR OF TITLES TO &MTITL
SET COLOR OF BOX TO &MBOXS
SET COLOR OF HIGHLIGHT TO &MHIGH
SET COLOR OF INFORMATION TO &MHOTK
SET COLOR OF FIELDS TO &MGETS
CLEAR
RETURN
************************************************************
* COLPAGE *
************************************************************
** SHOW THE NAMES OF EXISTING COLOR COMBINATIONS ON A PSUEDO WINDOW
PROCEDURE COLPAGE
IF READNEW
STORE 1 TO ICOLREC
STORE 0 TO COLBUNCH
STORE .F. TO COLORSEOF
FOR ICOLREC = 1 TO 15
IF .NOT. COLORSEOF
STORE UTCOLOR->NAME TO COLORREC(ICOLREC)
STORE RECNO() TO RECNUM(ICOLREC)
IF .NOT. EOF()
SKIP 1
COLBUNCH = COLBUNCH + 1
ENDIF
ELSE
STORE SPACE(10) TO COLORREC(ICOLREC)
ENDIF
IF EOF()
STORE .T. TO COLORSEOF
ENDIF
ENDFOR
STORE .F. TO READNEW
IF NEWCOLOR
STORE COLBUNCH TO COLCHOICE
ENDIF
ENDIF
IF COLCHOICE > COLBUNCH
STORE COLBUNCH TO COLCHOICE
ENDIF
SET COLOR OF NORMAL TO W/N
STORE 1 TO ROWLINE
FOR I = 1 TO 15
IF COLCHOICE = I
@ ROWLINE,63 SAY COLORREC(I) COLOR N/W
ELSE
@ ROWLINE,63 SAY COLORREC(I)
ENDIF
ROWLINE = ROWLINE + 1
ENDFOR
RETURN
************************************************************
* COL_CHOOSE *
************************************************************
** USE THE COLOR COMBINATIONS OF CURRENTLY HIGHLIGHTED RECORD
** SAVE THE COLOR VALUES FROM THE DATA BASE
** DON'T USE ANY '*' ENHANCED COLOR ATTRIBUTES
** NONE OF THE BACKGROUND COLORS MAY BE HIGHLIGHT
PROCEDURE COL_CHOOSE
STORE NAME TO MNAME
MBACK = TRIM(BACK)
NBACK = MBACK
NTEXT = TRIM(TEXT)
STORE NTEXT+'/'+NBACK TO MTEXT
NSAYS = TRIM(SAYS)
STORE NSAYS+'/'+NBACK TO MSAYS
** USER MAY PICK THE BACKGROUND COLOR OF THE GETS
** THE FOREGROUND COLOR WILL BE THE SAME AS THE SAYS
NGETS = SUBSTR(GETS,AT('/',GETS)+1)
NGETS = TRIM(NGETS)
STORE GETS TO MGETS
** NEED TO CHANGE MENU FOREGROUND TO HIGHLIGHT FOR THE COLOR PICKER DEMO;
** IF THE COLOR IS CHANGED AND SAVED TO THE COLORS DATABASE, THE COLOR
** WILL BE CHANGED TO NOT HIGHLIGHT ON THE DATABASE;
** BECAUSE FOXPRO AUTOMATICALLY CHANGES IT TO HIGHLIGHT IN USING IT
** SEPARATE THE FOREGROUND AND BACKGROUND COLOR OF THE MENUS.
NMENF = SUBSTR(MENU,1,AT('/',MENU)-1)
NMENB = SUBSTR(MENU,AT('/',MENU)+1)
IF .NOT. ('+' $ NMENF)
NMENF = NMENF+'+'
ENDIF
MMENU = NMENF + '/' + NMENB
NMSSG = SUBSTR(NMENF,1,AT('+',NMENF)-1)+'/'+NMENB
STORE MMENU TO MBOXS
STORE TRIM(TITL) TO MTITL
** SEPARATE THE FOREGROUND AND BACKGROUND COLOR OF THE HIGHLIGHTS
NHIGF = SUBSTR(HIGH,1,AT('/',HIGH)-1)
NHIGB = SUBSTR(HIGH,AT('/',HIGH)+1)
STORE NHIGF + '/' + NHIGB TO MHIGH
STORE HOTK TO MHOTK
STORE TRIM(ERRMSG) TO MERRMSG
STORE TRIM(WRNMSG) TO MWRNMSG
DO SAMPLSCRN
RETURN
************************************************************
* SAMPLSCRN *
************************************************************
* PAINT THE SAMPLE SCREEN FOR USER TO VIEW THE COLOR COMBINATION
PROCEDURE SAMPLSCRN
SET COLOR OF NORMAL TO &MTEXT
@ 0,0 CLEAR TO 16,54
SET COLOR OF NORMAL TO &MBOXS
@ 0,0 CLEAR TO 0,54
@ 0,0 CLEAR TO 6,15
@ 1,0 TO 6,15 DOUBLE
SET COLOR OF NORMAL TO &MMENU
@ 2,1 SAY 'FIRST CHOICE'
@ 5,1 SAY 'THIRD CHOICE'
@ 0,17 SAY 'MENU-ITEM 2 MENU-ITEM 3...'
SET COLOR OF NORMAL TO &NMSSG
@ 4,1 SAY '*SUB-HEADING*'
SET COLOR OF NORMAL TO &MHIGH
@ 0,0 SAY 'MENU-ITEM 1 '
@ 2,1 SAY 'F'
@ 3,1 SAY 'SECOND CHOICE'
@ 5,1 SAY 'T'
SET COLOR OF NORMAL TO &MTEXT
@ 9,18 TO 11,41
@ 10,23 SAY 'SAMPLE SCREEN'
@ 13,13 SAY 'SCREEN TEXT:'
@ 14,13 SAY 'SCREEN TEXT:'
SET COLOR OF NORMAL TO &MSAYS
@ 13,28 SAY 'PROTECTED DATA'
SET COLOR OF NORMAL TO &MGETS
STORE 'INPUT DATA' TO FIELDA
@ 14,28 SAY FIELDA
SET COLOR OF NORMAL TO &MTEXT
RETURN
************************************************************
* COLORPIC *
************************************************************
* LET USER PUT TOGETHER A NEW COLOR COMBINATION
* DISPLAYS OPTIONS TO BE CHANGED
* BACKGROUND, TEXT, SAY FIELDS, GET FIELDS, MENU, HIGHLIGHTS
PROCEDURE COLORPIC
PRIVATE KEYPRESS, ROWLINE, COLLINE, SAYLINE, NEWAREA,;
REPAINT, ARROW, ARRDIRECT
STORE 0 TO ARRDIRECT
ON ESCAPE RETURN
STORE .F. TO KEYPRESS
STORE .F. TO REPAINT
SET COLOR OF NORMAL TO W/N
@ 0,55 CLEAR TO 16,80
@ 0,55 TO 16,80 DOUBLE
@ 0,61 SAY 'SCREEN AREAS'
STORE 1 TO SCRCHOICE
STORE 1 TO COLORPAL
DO COLPAINT
SET COLOR OF NORMAL TO N/W
@ 23,0 CLEAR TO 24,80
@ 23,0 SAY '<'+ALLTRIM(ARRUP) + '><'+ALLTRIM(ARRDOWN)+'>=PICK SCREEN AREAS <'+ALLTRIM(ARRLEFT)+'><'+ALLTRIM(ARRIGHT)+'>=PICK COLORS'
@ 24,0 SAY '<ALT>{S}AVE SET <ESC>=EXIT'
SET COLOR OF NORMAL TO W/N
STORE .T. TO NEWAREA
STORE .T. TO REPAINT
** SHOW AREAS AND CURRENT COLORS, ALLOW USER TO CHANGE
DO WHILE .T.
** POSITION ARROWS IN SAMPLE SCREEN OF CURRENTLY HIGHLIGHTED AREA
STORE SROWARR(SCRCHOICE) TO ROWLINE
STORE SCOLARR(SCRCHOICE) TO COLLINE
IF SCRCHOICE = 1 && BACKGROUND
STORE ARRLEFT+ARRIGHT TO SAYLINE
ELSE
STORE ARRLEFT TO SAYLINE
ENDIF
@ ROWLINE,COLLINE SAY SAYLINE COLOR W+/N
IF SCRCHOICE = 2 .OR. SCRCHOICE = 3
@ SROWARR(11),SCOLARR(11) SAY ARRLEFT COLOR W+/N
@ SROWARR(12),SCOLARR(12) SAY ARRLEFT COLOR W+/N
ELSE
SET COLOR OF NORMAL TO &MTEXT
@ SROWARR(11),SCOLARR(11) CLEAR TO SROWARR(11),SCOLARR(11)+3
@ SROWARR(12),SCOLARR(12) CLEAR TO SROWARR(12),SCOLARR(12)+3
ENDIF
IF SCRCHOICE = 6 && SCREEN TEXT
@ SROWARR(9),SCOLARR(9) SAY ARRIGHT COLOR W+/N
@ SROWARR(10),SCOLARR(10) SAY ARRIGHT COLOR W+/N
ELSE
SET COLOR OF NORMAL TO &MTEXT
@ SROWARR(9),SCOLARR(9) CLEAR TO SROWARR(9),SCOLARR(9)+3
@ SROWARR(10),SCOLARR(10) CLEAR TO SROWARR(10),SCOLARR(10)+3
ENDIF
IF SCRCHOICE = 7 .OR. SCRCHOICE = 8 && DATA FIELDS
@ SROWARR(8),SCOLARR(8) SAY ARRLEFT COLOR W+/N
ELSE
@ SROWARR(8),SCOLARR(8) CLEAR TO SROWARR(8),SCOLARR(8)+3
ENDIF
SET COLOR OF NORMAL TO W/N
STORE INKEY() TO KEYPRESS
DO CASE
**-------------------------------------------------------------------
** UP AND DOWN ARROWS CHANGE SCREEN AREAS
**-------------------------------------------------------------------
CASE KEYPRESS = 5 && UP ARROW, PICK NEW SCREEN AREA
@ 18,ARROW CLEAR TO 18,ARROW+3
SET COLOR OF NORMAL TO &MTEXT
@ ROWLINE,COLLINE CLEAR TO ROWLINE,COLLINE+5
SET COLOR OF NORMAL TO W/N
IF SCRCHOICE > 1
SCRCHOICE = SCRCHOICE - 1
ELSE
SCRCHOICE = SBUNCH
ENDIF
STORE .T. TO NEWAREA
CASE KEYPRESS = 24 && DOWN ARROW, PICK NEW SCREEN AREA
@ 18,ARROW CLEAR TO 18,ARROW+3
SET COLOR OF NORMAL TO &MTEXT
@ ROWLINE,COLLINE CLEAR TO ROWLINE,COLLINE+5
SET COLOR OF NORMAL TO W/N
IF SCRCHOICE < SBUNCH
SCRCHOICE = SCRCHOICE + 1
ELSE
SCRCHOICE = 1
ENDIF
STORE .T. TO NEWAREA
**-------------------------------------------------------------------
** RIGHT AND LEFT ARROWS CHANGE COLORS
**-------------------------------------------------------------------
CASE KEYPRESS = 4 && RIGHT ARROW
@ 18,ARROW CLEAR TO 18,ARROW+3
STORE +1 TO ARRDIRECT
STORE .T. TO REPAINT
CASE KEYPRESS = 19 && LEFT ARROW
@ 18,ARROW CLEAR TO 18,ARROW+3
STORE -1 TO ARRDIRECT
STORE .T. TO REPAINT
**-------------------------------------------------------------------
** ALT-S WILL SAVE THE COLOR COMBINATION TO THE FILE, NEW NAME
**-------------------------------------------------------------------
CASE KEYPRESS = 31 && ALT-S
STORE .T. TO NEWCOLOR
DO COLSAVE
EXIT
CASE KEYPRESS = 27 .OR. KEYPRESS = 19 && EXIT, NO SELECT
EXIT
ENDCASE
IF NEWAREA
DO SCRPAGE
DO PICKAREA
STORE .F. TO NEWAREA
ENDIF
IF REPAINT
DO PICKPAINT
STORE .F. TO REPAINT
ENDIF
SET COLOR OF NORMAL TO W/N
ARROW = ((COLORPAL-1)*4)+9
@ 18,ARROW SAY ARRDOWN COLOR W+/N
ENDDO
RETURN
************************************************************
* SCRPAGE *
************************************************************
** SHOW ALL SCREEN AREA CHOICES, HIGHLIGHT CURRENT CHOICE
PROCEDURE SCRPAGE
PRIVATE ROWLINE, I
SET COLOR OF NORMAL TO W/N
SET COLOR OF FIELDS TO W/N
STORE 2 TO ROWLINE
FOR I = 1 TO SBUNCH
IF I = SCRCHOICE
@ ROWLINE,57 SAY SCRAREAS(I) COLOR N/W
ELSE
@ ROWLINE,57 SAY SCRAREAS(I) COLOR W/N
ENDIF
ROWLINE = ROWLINE + 1
ENDFOR
RETURN
************************************************************
* COLPAINT *
************************************************************
** SHOWS THE COLOR PALETTE IN A PSUEDO WINDOW
PROCEDURE COLPAINT
PRIVATE COLLINE, CBLOCK
CBLOCK = REPLICATE(CHR(219),4)
STORE 9 TO COLLINE
SET COLOR OF NORMAL TO W/N
@ 17,0 CLEAR TO 21,80
@ 17,0 TO 21,80 DOUBLE
FOR I = 1 TO 16
@ 20,COLLINE say CBLOCK COLOR &COLORS(I)
COLLINE = COLLINE + 4
ENDFOR
RETURN
************************************************************
* PICKAREA *
************************************************************
PROCEDURE PICKAREA
** THE ARROW WILL POSITION AT THE CURRENT COLOR OF THE CURRENT AREA
** LETS USER PICK COLOR FROM PALETTE (COLPAINT)
PRIVATE SCAREA, NOWCOLOR
DO CASE
CASE SCRCHOICE = 1
STORE NBACK TO NOWCOLOR
CASE SCRCHOICE = 2
STORE NMENF TO NOWCOLOR
CASE SCRCHOICE = 3
STORE NMENB TO NOWCOLOR
CASE SCRCHOICE = 4
STORE NHIGF TO NOWCOLOR
CASE SCRCHOICE = 5
STORE NHIGB TO NOWCOLOR
CASE SCRCHOICE = 6
STORE NTEXT TO NOWCOLOR
CASE SCRCHOICE = 7
STORE NSAYS TO NOWCOLOR
CASE SCRCHOICE = 8
STORE NGETS TO NOWCOLOR
ENDCASE
NOWCOLOR = TRIM(NOWCOLOR)
STORE 1 TO COLORPAL
FOR I = 1 TO 16
IF NOWCOLOR == COLORS(I)
STORE I TO COLORPAL
EXIT
ENDIF
ENDFOR
RETURN
************************************************************
* PICKPAINT *
************************************************************
** MOVE CHOSEN COLOR TO APPROPRIATE AREA COLOR
PROCEDURE PICKPAINT
PRIVATE NEWCOLOR
COLORPAL = COLORPAL + ARRDIRECT
IF COLORPAL < 1
COLORPAL = CBUNCH
ENDIF
IF COLORPAL > CBUNCH
COLORPAL = 1
ENDIF
** MENU BACKGROUND AND HIGHLIGHT BACKGROUND COLORS
** ARE NOT ALLOWED TO BE BRIGHT
IF (SCRCHOICE = 3 .OR. SCRCHOICE = 5)
DO WHILE ('+' $ COLORS(COLORPAL))
COLORPAL = COLORPAL + ARRDIRECT
IF COLORPAL < 1
COLORPAL = CBUNCH
ENDIF
IF COLORPAL > CBUNCH
COLORPAL = 1
ENDIF
ENDDO
ENDIF
** MAIN SCREEN BACKGROUND AND INPUT BACKGROUND COLORS
** ARE NOT ALLOWED TO BE BRIGHT, AND NOT ALLOWED TO BE EQUAL
IF (SCRCHOICE = 1)
DO WHILE ('+' $ COLORS(COLORPAL) .OR. COLORS(COLORPAL) == NGETS)
COLORPAL = COLORPAL + ARRDIRECT
IF COLORPAL < 1
COLORPAL = CBUNCH
ENDIF
IF COLORPAL > CBUNCH
COLORPAL = 1
ENDIF
ENDDO
ENDIF
IF (SCRCHOICE = 8)
DO WHILE ('+' $ COLORS(COLORPAL) .OR. COLORS(COLORPAL) == NBACK)
COLORPAL = COLORPAL + ARRDIRECT
IF COLORPAL < 1
COLORPAL = CBUNCH
ENDIF
IF COLORPAL > CBUNCH
COLORPAL = 1
ENDIF
ENDDO
ENDIF
** MENU FOREGROUND COLOR MUST BE BRIGHT
IF (SCRCHOICE = 2)
DO WHILE (.NOT.'+' $ COLORS(COLORPAL))
COLORPAL = COLORPAL + ARRDIRECT
IF COLORPAL < 1
COLORPAL = CBUNCH
ENDIF
IF COLORPAL > CBUNCH
COLORPAL = 1
ENDIF
ENDDO
ENDIF
STORE 0 TO ARRDIRECT
STORE COLORS(COLORPAL) TO NEWCOLOR
DO CASE
CASE SCRCHOICE = 1
STORE NEWCOLOR TO NBACK
CASE SCRCHOICE = 2
STORE NEWCOLOR TO NMENF
CASE SCRCHOICE = 3
STORE NEWCOLOR TO NMENB
CASE SCRCHOICE = 4
STORE NEWCOLOR TO NHIGF
CASE SCRCHOICE = 5
STORE NEWCOLOR TO NHIGB
CASE SCRCHOICE = 6
STORE NEWCOLOR TO NTEXT
CASE SCRCHOICE = 7
STORE NEWCOLOR TO NSAYS
CASE SCRCHOICE = 8
STORE NEWCOLOR TO NGETS
ENDCASE
STORE NBACK TO MBACK
STORE NTEXT+'/'+NBACK TO MTEXT
STORE NSAYS+'/'+NBACK TO MSAYS
STORE NSAYS+'/'+NGETS TO MGETS
STORE NMENF+'/'+NMENB TO MMENU
STORE SUBSTR(NMENF,1,AT('+',NMENF)-1)+'/'+NMENB TO NMSSG
STORE MMENU TO MBOXS
STORE NHIGF+'/'+NHIGB TO MHIGH
STORE MHIGH TO MHOTK
STORE MHIGH TO MTITL
STORE 'R+/W' TO MERRMSG
STORE 'GR+/B' TO MWRNMSG
DO SAMPLSCRN
RETURN
************************************************************
* COLSAVE *
************************************************************
** SAVE THE CURRENT COLOR CHOICES TO THE DATABASE WITH A NEW NAME
PROCEDURE COLSAVE
PRIVATE;
CNAME, CBACK, CTEXT, CSAYS, CGETS, CMENU, CHOTK, CBOXS, CTITL
SET CURSOR ON
SET COLOR OF FIELDS TO N/W
STORE SPACE(10) TO CNAME
CLEAR GETS
@ 12,57 SAY 'ENTER COLOR SET NAME'
@ 13,57 GET CNAME
READ
SET CURSOR OFF
STORE NBACK TO CBACK
STORE NTEXT TO CTEXT
STORE NSAYS TO CSAYS
STORE NSAYS+'/'+NGETS TO CGETS
** TURN OFF HIGHLIGHT IN MENU FOREGROUND, FOXPRO MAKES BRIGHT AUTOMATICALLY
** TURN ON HIGHLIGHT IN BOXES FOREGROUND, TO MATCH THE MENU
IF ('+' $ NMENF)
STORE SUBSTR(NMENF,1,AT('+',NMENF)-1) + '/' + NMENB TO CMENU
STORE NMENF+'/'+NMENB TO CBOXS
ELSE
STORE NMENF + '/' + NMENB TO CMENU
STORE NMENF+'+/'+NMENB TO CBOXS
ENDIF
STORE NHIGF + '/' + NHIGB TO CHIGH
STORE CHIGH TO CTITL
STORE CHIGH TO CHOTK
APPEND BLANK
REPLACE NAME WITH CNAME;
BACK WITH CBACK;
TEXT WITH CTEXT;
SAYS WITH CSAYS;
GETS WITH CGETS;
MENU WITH CMENU;
BOXS WITH CBOXS;
TITL WITH CTITL;
HIGH WITH CHIGH;
HOTK WITH CHOTK;
ERRMSG WITH 'R+/W';
WRNMSG WITH 'GR+/N'
RETURN